{{tag>Lucid  precise quantal raring console pare-feu réseau sécurité}}

----

====== Uncomplicated Firewall ======

//Le pare-feu tout simplement//

UFW est un nouvel outil de configuration simplifié en [[:console|ligne de commande]] de [[wpfr>Netfilter]], qui donne une alternative à l'outil [[:iptables]]. UFW devrait à terme permettre une configuration automatique du pare-feu lors de l'installation de programmes en ayant besoin. 

<note tip>Il existe une interface graphique pour UFW : [[Gufw]].</note> 
<note tip>Il exite aussi une interface graphique kde pour UFW [[http://kde-apps.org/content/show.php?content=137789|ici]].</note>


===== Installation =====

Uncomplicated Firewall est pré-installé sous Ubuntu, mais si besoin vous devez simplement [[:tutoriel:comment_installer_un_paquet|installer le paquet]] [[apt>ufw|ufw]].\\


===== Utilisation =====
<note>
L'ordre de déclaration des règles est très important, le système utilisant une politique « premier arrivé, premier servi ». Prenez donc soin d'ajouter vos règles spécifiques avant les règles générales lorsqu'elles concernent des éléments communs.</note>

L'outil UFW n'est pas activé par défaut, il vous faut donc avoir les [[:sudo|droits administrateur]] en [[:console|ligne de commande]]. 

Activer UFW :

  sudo ufw enable

Désactiver UFW : 

  sudo ufw disable


<note tip>La version de Uncomplicated Firewall disponible par défaut avec [[:Lucid]] permet de paramétrer aussi bien les règles par défaut entrantes que sortantes. </note>

Autoriser le trafic entrant suivant les règles par défaut : 

  sudo ufw default allow

Refuser le trafic entrant suivant les règles par défaut : 

  sudo ufw default deny


  * Si vous êtes sous [[:Lucid| Lucid Lynx 10.04]] (ou supérieur)


Autoriser le trafic entrant suivant les règles par défaut : 

  sudo ufw default allow incoming

Refuser le trafic entrant suivant les règles par défaut : 

  sudo ufw default deny incoming

Autoriser le trafic sortant suivant les règles par défaut : 

  sudo ufw default allow outgoing

Refuser le trafic sortant suivant les règles par défaut : 

  sudo ufw default deny outgoing


<note>Si vous obtenez **"ERROR: / is world writable!"** en voulant activer Uncomplicated Firewall, ces commandes devraient régler le problème : 

  sudo chown root:root /
  sudo chmod 755 /
</note>

==== Afficher l'état actuel des règles ====

  sudo ufw status verbose

Cette commande devrait vous afficher quelque chose comme ça : 

<code>
Firewall loaded

To                      Action  From
--                      ------  ----
apache2                 DENY    Anywhere        Apache Webserver     
openssh-server          ALLOW   Anywhere        SSH Logins           
192.168.0.2 pop3s       ALLOW   Anywhere                             
named                   DENY    Anywhere        WARNING: New service 
tcp:8082                DENY    10.0.0.0/8                           
tcp:25                  ALLOW   192.168.0.0/24                       
ntp                     ALLOW*  Anywhere                             
imaps                   ALLOW** Anywhere                             
tcp:23                  ALLOW** Anywhere                             
jabberd2                ALLOW** Anywhere                             


* rule for removed package 'ntpd'
** services not running
</code>
L'argument ''verbose'' est optionnel. Cependant, à partir d'Ubuntu 10.04 il est vivement recommandé car il va permettre d'afficher la direction du trafic dans les règles.

=== Numéro de règle ===
Vous pouvez afficher les règles numérotées.
  sudo ufw status numbered

==== Les commandes de base ====

Activer la journalisation : 

  sudo ufw logging on

Désactiver la journalisation : 

  sudo ufw logging off

Autoriser : 

  sudo ufw allow [règle]

Refuser : 

  sudo ufw deny [règle]

Supprimer : 

  sudo ufw delete allow [règle]

Supprimer simplement une règle d'après son [[#numéro_de_regle|numéro]] :
<code>sudo ufw delete NUM</code>


==== La syntaxe des règles ====

=== Règles simples ===

Voici quelques exemples pour comprendre la syntaxe des règles de configuration. 

  * Ouverture du port 53 en TCP et UDP :<code>sudo ufw allow 53</code>
  * Ouverture du port 25 en TCP uniquement :<code>sudo ufw allow 25/tcp</code>

=== Utilisation des services ===

UFW regarde dans sa liste de services connus pour appliquer les règles standards associées à ces services (apache2, smtp, imaps, etc..).\\
Pour avoir la liste des services : 
<code>less /etc/services</code>
Exemple : Autoriser le service SMTP : 
<code>sudo ufw allow smtp</code>

2° exemple : Autoriser le port de Gnome-Dictionary (2628/tcp) :
<code>sudo ufw allow out 2628/tcp</code>

3° exemple : Autoriser le protocole pop3 sécurisé
(réception du courrier de Gmail et autres messageries utilisant ce protocole sécurisé) :
<code>sudo ufw allow out pop3s/tcp</code>



=== Règles complexes ===

L'écriture de règles plus complexes est également possible : 

  * Refuser le protocole (//proto//) TCP à (//to//) tout le monde (//any//) sur le port (//port//) 80 : <code>sudo ufw deny proto tcp to any port 80</code>
  * Refuser à (//to//) l'adresse 192.168.0.1 de recevoir sur le port (//port//) 25 les données provenant (//from//) du [[wpfr>Sous-réseau#Réseaux_privés|réseau de classe A]] et utilisant le protocole (//proto//) TCP : <code>sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25</code>
  * Refuser les données utilisant le protocole (//proto//) UDP provenant (//from//) de 1.2.3.4  sur le port (//port//) 514 : <code>sudo ufw deny proto udp from 1.2.3.4 to any port 514</code>

==== insérer une règle ====
Vous pouvez insérer une règle à une position précise en utilisant le [[#numéro_de_regle|numéro]]
  sudo ufw insert NUM RULE
  * Insérer en numéro 2 une règle refusant le traffic entrant utilisant le protocole (//proto//) UDP (//to//) en direction de (//any//) toute les adresses en écoutes sur votre machine sur le port (//port//) 514 en provenance (//from//) de 1.2.3.4
  sudo ufw insert 2 deny proto udp to any port 514 from 1.2.3.4


<note warning>Dans le cas où vous devez bloquer une IP spécifique (ex: sudo ufw deny from <ip_a_bloquer>) sur un service que vous avez ouvert,

il vous faudra [[:tutoriel:comment_modifier_un_fichier|éditer le fichier]] **/etc/ufw/before.rules** et y ajouter une section "Block IP" après la section "Drop INVALID packets"

<file># drop INVALID packets (logs these in loglevel medium and higher)
-A ufw-before-input -m state --state INVALID -j ufw-logging-deny
-A ufw-before-input -m state --state INVALID -j DROP

# Block IP
-A ufw-before-input -s <ip_a_bloquer> -j DROP
</file>
</note>

Exemple :

Bloquer toutes les IP de la HADOPI :

    sudo ufw deny from 90.80.155.240/28
    sudo ufw deny from 80.12.48.0/24
    sudo ufw deny from 5.23.42.12/30
    sudo ufw deny from 195.5.217.72/29
    sudo ufw deny from 81.80.36.231
    sudo ufw deny from 81.80.36.232
    sudo ufw deny from 81.80.36.233
    sudo ufw deny from 81.80.36.234
    sudo ufw deny from 194.79.189.240/29
    
Si la paranoïa vous emporte vous pouvez mettre :
    sudo ufw deny to 90.80.155.240/28
    sudo ufw deny to 80.12.48.0/24
    sudo ufw deny to 5.23.42.12/30
    sudo ufw deny to 195.5.217.72/29
    sudo ufw deny to 81.80.36.231
    sudo ufw deny to 81.80.36.232
    sudo ufw deny to 81.80.36.233
    sudo ufw deny to 81.80.36.234
    sudo ufw deny to 194.79.189.240/29
  
  
===== Configuration =====

==== IPv6 ====

UFW prend en charge les adresses IPv6.
Le support d'IPv6 est désormais activé par défaut, si ce n'est pas le cas, 
il suffit de [[:tutoriel:comment_editer_un_fichier|modifier le fichier]] **/etc/default/ufw** et d'y mettre ceci : 

<file bash /etc/default/ufw>IPV6=yes</file>

Il ne reste plus qu'à désactiver et activer de nouveau UFW : 

<code>
sudo ufw disable
sudo ufw enable
</code>
<note>
Si le support d'IPv6 n'était pas activé, il vous faudra sûrement alors supprimer puis recréer vos règles.
</note>
==== Ne pas autoriser le ping ====

Par défaut UFW autorise les requêtes de ping (ICMP Echo Requests). 
Il faut [[:tutoriel:comment_editer_un_fichier|éditer]] ''/etc/ufw/before.rules'' et commenter en ajoutant un "**#**" à la ligne suivante : 
<code># -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT</code>
 
==== Autoriser le ping ====

Sous [[:Lucid|Lucid Lynx]], si vous avez configuré UFW pour refuser par défaut les connexions sortantes, vous constaterez que vous ne pouvez plus effectuer de ping. 
Pour y remédier il vous suffit d'[[:tutoriel:comment_editer_un_fichier|éditer]] **/etc/ufw/before.rules** et de dupliquer : 

  # ok icmp codes input
  -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
  -A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
  -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
  -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
  -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

Puis de remplacer "**input**" par "**output**".
Bien entendu, si vous désirez désactiver certains types de ping, il vous suffit de rajouter un "**#**" devant la ligne du type indésirable. 

<note tip>Script pour configurer UFW pour un fonctionnement optimal de MSN.</note>

==== Ajouter les règles pour le protocole MSN ====

<code>
#!/bin/sh

echo "Le programme va configurer les règles pour MSN Audio/Vidéo/Transfert de fichier."

sudo ufw allow 6901

sudo ufw allow 6801/udp

for i in `seq 2001 2120`; do
  sudo ufw allow $i/udp
done

for i in `seq 6891 6900`; do
  sudo ufw allow $i/tcp
done

echo "Tous les ports ont bien été configurés pour MSN."
echo "Vérifiez la configuration du routeur."
echo "Les réglages sont issus du site support http://support.microsoft.com/kb/324214/en-us"
</code>

===== Voir aussi =====

  * (en) [[https://wiki.ubuntu.com/UncomplicatedFirewall|UncomplicatedFirewall]] sur le wiki ubuntu anglophone
  * ( fr ) [[http://leshirondellesdunet.com/pages/parefeu.php]] un tutoriel pour apprendre à configurer ufw
  * (en) [[http://kde-apps.org/content/show.php?content=137789]] une interface graphique pour configurer ufw sous kde dans le panneaux de configuration
----

//Contributeurs : [[:utilisateurs:yoboy|YoBoY]].//